﻿//using BLL.Interface;
//using Common.Extensions;
//using DAL.Interface;
//using Microsoft.EntityFrameworkCore;
//using Model;
//using Model.DTO.Public.Get;
//using Model.DTO.Public.Id;
//using Model.DTO.Ware;
//using Model.Entity.Ware;

//namespace BLL
//{
//    /// <summary>
//    /// 商品类型业务逻辑层
//    /// </summary>
//    public class WareTypeBLL : IWareTypeBLL
//    {
//        private readonly IBaseDAL<TB_WareType> _wareTypeDAL;
//        public WareTypeBLL(IBaseDAL<TB_WareType> wareTypeDAL)
//        {
//            _wareTypeDAL = wareTypeDAL;
//        }
//        /// <summary>
//        /// 添加商品类型
//        /// </summary>
//        /// <param name="param"></param>
//        /// <returns></returns>
//        public async Task<ResponseMessage> AddWareType(EditWareTypeDTO param)
//        {
//            try
//            {
//                #region 参数校验
//                if (param.WareName.Length > 16)
//                {
//                    return ResponseMessage.CreateError("商品类型名称长度不能大于16");
//                }
//                if (param.WareCode.Length > 16)
//                {
//                    return ResponseMessage.CreateError("商品类型代码长度不能大于16");
//                }
//                if (param.Description != null && param.Description.Length > 128)
//                {
//                    return ResponseMessage.CreateError("商品类型描述长度不能大于128");
//                }
//                #endregion
//                //查询商品类型名称和商品类型代码是否已存在
//                var query = await _wareTypeDAL.GetEntityAllAsync(x => x.Name == param.WareName || x.Code == param.WareCode);
//                var sameExist = await query.AnyAsync();
//                if (sameExist)
//                {
//                    return ResponseMessage.CreateError("商品类型名称或商品类型代码已存在");
//                }
//                //创建实体
//                var roleType = new TB_WareType();
//                param.CopyPropertiesTo(roleType);
//                var result = await _wareTypeDAL.CreateEntityAsync(roleType);
//                return result ? ResponseMessage.CreateSuccess("添加成功") : ResponseMessage.CreateError("添加失败");
//            }
//            catch
//            {
//                return ResponseMessage.CreateError("添加失败");
//            }
//        }
//        /// <summary>
//        /// 删除商品类型
//        /// </summary>
//        /// <param name="param"></param>
//        /// <returns></returns>
//        public async Task<ResponseMessage> DeleteWareType(OperateIdDTO_INT param)
//        {
//            try
//            {
//                bool result;
//                //优先处理Id，即单个删除
//                if (param.Id <= 0)
//                {
//                    if (param.Ids.Count == 0)
//                    {
//                        return ResponseMessage.CreateError("无效的商品类型Id");
//                    }
//                    //批量删除
//                    var successList = new List<int>();
//                    foreach (var roleId in param.Ids)
//                    {
//                        result = await _wareTypeDAL.DeleteEntityAsync(roleId);
//                        if (result)
//                        {
//                            successList.Add(roleId);
//                        }
//                    }
//                    return ResponseMessage.CreateSuccess($"删除成功({successList.Count}/{param.Ids.Count})", successList);
//                }
//                //单个删除
//                result = await _wareTypeDAL.DeleteEntityAsync(param.Id);
//                return result ? ResponseMessage.CreateSuccess("删除成功") : ResponseMessage.CreateError("删除失败");
//            }
//            catch
//            {
//                return ResponseMessage.CreateError("删除失败");
//            }
//        }
//        /// <summary>
//        /// 修改商品类型
//        /// </summary>
//        /// <param name="param"></param>
//        /// <returns></returns>
//        public async Task<ResponseMessage> UpdateWareType(EditWareTypeDTO param)
//        {
//            try
//            {
//                if (param.Id <= 0)
//                {
//                    return ResponseMessage.CreateError("无效的角色Id");
//                }
//                var query = await _wareTypeDAL.GetEntityAllAsync(x => x.Id == param.Id);
//                //目标角色
//                var role = query.FirstOrDefault();
//                if (role == null)
//                {
//                    return ResponseMessage.CreateError("角色不存在");
//                }
//                //查询角色名称和角色代码是否已存在
//                query = await _wareTypeDAL.GetEntityAllAsync(x => x.Id != param.Id);
//                var sameExist = await query.Where(x => x.Name == param.WareName).AnyAsync();
//                if (sameExist)
//                {
//                    return ResponseMessage.CreateError("角色名称已存在");
//                }
//                sameExist = await query.Where(x => x.Code == param.WareCode).AnyAsync();
//                if (sameExist)
//                {
//                    return ResponseMessage.CreateError("角色代码已存在");
//                }
//                //覆盖属性
//                param.CopyPropertiesTo(role);
//                var result = await _wareTypeDAL.UpdateEntityAsync(role);
//                return result ? ResponseMessage.CreateSuccess("修改成功") : ResponseMessage.CreateError("修改失败");
//            }
//            catch
//            {
//                return ResponseMessage.CreateError("修改失败");
//            }
//        }
//        /// <summary>
//        /// 获取商品类型列表
//        /// </summary>
//        /// <param name="param"></param>
//        /// <returns></returns>
//        public async Task<ResponseMessage> GetWareTypeList(GetListDTO param)
//        {
//            try
//            {
//                var query = await _wareTypeDAL.GetEntityAllAsync(x => x.Name.Contains(param.Query ?? string.Empty));
//                //查询的总数
//                int total = await query.CountAsync();
//                //查询的结果
//                var list = new List<TB_WareType>();
//                if (total <= 0)
//                {
//                    list = await query.ToListAsync();
//                }
//                else
//                {
//                    #region 参数校验
//                    if (param.Page <= 0)
//                    {
//                        param.Page = 1;
//                    }
//                    if (param.Size <= 0)
//                    {
//                        param.Size = 10;
//                    }
//                    #endregion
//                    list = await query.Skip((param.Page - 1) * param.Size).Take(param.Size).ToListAsync();
//                }
//                return ResponseMessage.CreateSuccess("获取成功", new { total, list });
//            }
//            catch
//            {
//                return ResponseMessage.CreateError("获取失败");
//            }
//        }
//    }
//}
